const { body } = require('express-validator');
const { Order, Review } = require('../../models');

exports.createReview = [
    body('orderId')
        .notEmpty().withMessage('订单ID不能为空').bail()
        .custom(async (value, { req }) => {
            // 检查订单是否存在且属于当前用户
            const order = await Order.findById(value);
            if (!order) {
                throw new Error('订单不存在');
            }
            if (order.userId.toString() !== req.user.userinfo.id) {
                throw new Error('无权评价此订单');
            }
            if (order.status !== '已完成') {
                throw new Error('只能评价已完成的订单');
            }
            
            // 检查是否已评价
            const existingReview = await Review.findOne({ orderId: value });
            if (existingReview) {
                throw new Error('该订单已评价');
            }
            
            // 将订单信息存储到 req 中，供后续使用
            req.order = order;
            return true;
        }),

    body('rating')
        .notEmpty().withMessage('评分不能为空').bail()
        .isInt({ min: 1, max: 5 }).withMessage('评分必须在1-5之间'),

    body('comment')
        .optional()
        .trim()
        .isLength({ max: 500 }).withMessage('评论不能超过500字符')
]; 